Wiederholungsanweisungen

Ohne diese Anweisungskategorie wären Aufgaben wie die folgenden nur umständlich oder überhaupt nicht programmierbar:

Die erste Aufgabe liesse sich umständlich noch mit den Operatoren = und + programmieren (Summe = 1 + 2 + ... + 1000). Die zweite Aufgabe erfordert hingegen eine Anweisung, die je nach Bedingung die eine oder andere Anweisungsfolge ausführt. Man nennt dies eine Entscheidungsanweisung. Das erste Problem lösen wir mit der Wiederholungsanweisung Do While ... Loop (engl. loop heisst Schleife):

Zahl = 1                  ‘ 1
Summe = 0                 ‘ 2
Do While Zahl <= 1000     ‘ 3
  Summe = Summe + Zahl    ‘ 4
  Zahl = Zahl + 1         ‘ 5
Loop ‘ 6

Der Programmausschnitt berechnet die Summe 1 + 2 + ... + 1000. Ein Hochkomma leitet einen Kommentar ein, der bis an das Ende der laufenden Zeile reichen darf. Die Zeilen 1 und 2 weisen dem Wiederholungszähler Zahl und der Aggregationsvariablen Summe die Anfangswerte 1 und 0 zu. Solange Zahl kleiner oder gleich 1000 ist, wird die Schleife der Zeilen 3 bis 6 betreten. Darin wird jedesmal der laufende Wert von Zahl zur Summe addiert, und Zahl wird um 1 erhöht. Gilt die Wiederholungsbedingung nach While nicht mehr, so springt das Programm nach dem Schleifenende (nach dem Schlüsselwort Loop) nicht mehr zur Zeile 3 zurück.

Die Struktur des Programmausschnitts lässt sich auf andere Wiederholungsaufgaben mit Do While ... Loop verallgemeinern:

<Initialisierung>
Do While <Ausführungsbedingung>
    <Schleifenkörper>
Loop

Fehler schleichen sich vor allem an den folgenden Positionen einer Wiederholungsanweisung ein:

a) Initialisierung

Zahl = 1
Summe = 1               Initialisierungsfehler!
Do While Zahl <= 1000
  Summe = Summe + Zahl
  Zahl = Zahl + 1
Loop

b) Schleifenbedingung

Zahl = 1
Summe = 0
Do While Zahl < 1000    Bedingungsfehler!
  Summe = Summe + Zahl
  Zahl = Zahl + 1
Loop

c) Schleifenkörper

Zahl = 1
Summe = 0
Do While Zahl <= 1000
  Zahl = Zahl + 1       ‘ Zählfehler!
  Summe = Summe + Zahl Aggregationsfehler!
Loop

Jeder dieser Fehler lässt sich durch eine Korrektur der Initialisierungsphase, der Schleifenbedingung oder der Reihenfolge der Schleifenanweisungen beheben.

Entscheidungsanweisungen